Шаг 11 - JMP или прыжок

Загрузить проект

Использование этого оператора позволяет нам перемещаться по коду. То есть фактически команда JMP меняет регистр IP. Переход производится на метку. Итак, нам нужно указать команду перехода:

JMP метка

И саму метку

метка:

Давайте изменим пример шага "Шаг 3 - Программа HelloWord". Так, чтобы обойти вывод строки:

MODEL	TINY
STACK 256	
DATASEG
	Hellostr DB 'Hello First Step Site '
CODESEG		
start:	
	mov ax,@data
	mov ds,ax		
	jmp w1
	mov bx,1
	mov cx,21
	mov dx,offset Hellostr 
	mov ah,40h
	int 21h
w1:
	mov ah, 04Ch	
	mov al, 1h	
	int 21h
end start	

Мы просто переходим на метку. А теперь смотрим, как все это выглядит в отладчике:

11_1.gif (6024 b)

В результате у процессора есть точно такая же команда перехода. Нажимаем на F8 еще раз:

11_2.gif (3116 b)

Обратите внимание, что регистр IP стал 0015 в данном случае, то есть JMP указывает IP куда нужно переместить указатель команд. После выполнения указатель команд стоит по этому адресу, а ненужные команды мы проскочили.

Итак JMP позволяет нам произвольно перемещаться по коду.